﻿using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using ACM.Dataset.CDBNames;

/// <summary>
/// Summary description for TOPICA_SMS_Service
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class TOPICA_SMS_Service : System.Web.Services.WebService
{

    public TOPICA_SMS_Service()
    {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    private void write_log(Exception ip_e)
    {
        Business.Log.Logger.Instance.Write(ip_e.Message);
    }
    // Hàm này để chuẩn hóa message và kiểm tra tính hợp lệ của tin nhắn
    private bool kiem_tra_cu_phap_hop_le(string ip_str_message
                                        , ref string op_str_command_code
                                        , ref string op_str_amazing_acc
                                        , ref string op_str_ma_kich_hoat)
    {
        while (ip_str_message.Contains("  "))
        {
            ip_str_message.Replace("  ", " ");
        }
        string[] v_str_chuoi_da_bam = ip_str_message.Split(' ');
        // Nếu cú pháp sau khi cắt có khác 3 phần tử
        if (v_str_chuoi_da_bam.Length != 3)
            return false;
        // Nếu đã hợp lệ, chỉ gồm 3 phần tử
        op_str_command_code = v_str_chuoi_da_bam[0].ToUpper();
        op_str_amazing_acc = v_str_chuoi_da_bam[1];
        op_str_ma_kich_hoat = v_str_chuoi_da_bam[2];
        if (!op_str_command_code.Equals("NAP1")) return false;
        return true;
    }
    // Hàm này để chuẩn hóa message và kiểm tra tính hợp lệ của tin nhắn
    private bool kiem_tra_tin_nhan_hop_le(string ip_str_message
                                        , ref string op_str_command_code
                                        , ref string op_str_amazing_acc
                                        , ref string op_str_ma_kich_hoat)
    {
        while (ip_str_message.Contains(" "))
        {
            ip_str_message.Replace(" ", "");
        }
        // Nếu đã hợp lệ, chỉ gồm 3 phần tử
        op_str_command_code = ip_str_message.Substring(0, 4).ToUpper();
        op_str_amazing_acc = ip_str_message.Substring(4,ip_str_message.Length - 18);
        op_str_ma_kich_hoat = ip_str_message.Substring(op_str_command_code.Length + op_str_amazing_acc.Length,14);
        if (!op_str_command_code.Equals("NAP1")) return false; // Tin nhắn sai cú pháp
        return true;
    }
    [WebMethod(Description = "Phương thức này thực hiện việc ra hạn thẻ qua SMS.", EnableSession = false)]
    public string getdata(string username
                          , string password
                          , decimal moid
                          , string userid
                          , string shortcode
                          , string commandcode
                          , string message)
    {
        string v_str_ket_qua_kich_hoat_sms = "";
        string v_str_username_api = C_USER_getdata.C_USER_NAME;
        string v_str_password_api = C_USER_getdata.C_PASS_WORD;
        try
        {
            //1. Kiểm tra thông tin về user và pasword sử dụng method
            if (username.Equals(v_str_username_api) && password.Equals(v_str_password_api))
            {
                //2. Thu thập các thông tin do đối tác cung cấp
                string v_str_so_dien_thoai = userid;
                string v_str_tai_khoan_amazing = "";
                string v_str_ma_the_kich_hoat = "";
                string v_str_command_code = "";
                // 2.1.1Kiểm tra đầu số gửi tới
                if (!shortcode.Equals(C_CONSTANT_VARIABLE.C_DAU_SO_7XXX))
                {
                    v_str_ket_qua_kich_hoat_sms = C_MESS_KET_QUA_KICH_HOAT_SMS_STRING_TIENG_VIET_KHONG_DAU.C_DAU_SO_KHONG_DUNG;
                    return v_str_ket_qua_kich_hoat_sms;
                }
                // 2.1.2 Kiểm tra cú pháp của tin nhắn
                // Nếu cú pháp hợp lệ
                if (kiem_tra_cu_phap_hop_le(message.Trim(), ref v_str_command_code, ref v_str_tai_khoan_amazing, ref v_str_ma_the_kich_hoat))
                {
                    Service v_acm_services = new Service();
                    v_str_ket_qua_kich_hoat_sms = v_acm_services.KichHoatTheQuaSMS(C_USER_KichHoatTheQuaSMS.C_USER_NAME, C_USER_KichHoatTheQuaSMS.C_PASS_WORD, v_str_ma_the_kich_hoat, v_str_tai_khoan_amazing, v_str_so_dien_thoai);
                }
                else v_str_ket_qua_kich_hoat_sms = C_MESS_KET_QUA_KICH_HOAT_SMS_STRING_TIENG_VIET_KHONG_DAU.C_TIN_NHAN_SAI_CU_PHAP;
            }
            // Nếu sai mật khẩu truy cập API
            else
            {
                v_str_ket_qua_kich_hoat_sms = C_MESS_KET_QUA_KICH_HOAT_SMS_STRING_TIENG_VIET_KHONG_DAU.C_KHONG_CO_QUYEN_TRUY_CAP_API_ACM;
            }
        }
        catch (Exception v_e)
        {
            v_str_ket_qua_kich_hoat_sms = C_MESS_KET_QUA_KICH_HOAT_SMS_STRING_TIENG_VIET_KHONG_DAU.C_GIAO_DICH_KHONG_THANH_CONG;
            write_log(v_e);
        }
        return v_str_ket_qua_kich_hoat_sms;
    }  
}

